﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace QuanLyBepAnTuThien
{
    public partial class UcPhanCongLichTruc : UserControl
    {
        public UcPhanCongLichTruc()
        {
            InitializeComponent();
        }
        connect cn = new connect();
        bool them = true;
        private void loaddata()
        {
            gridControl.DataSource = cn.getDataTable("tblLichTruc_DS");
            cobTo.DataSource = cn.getDataTable("tblTo_DS");
            cobTo.DisplayMember = "TenTo";
            cobTo.ValueMember = "MaTo";
            BatTatButton(true);

        }
        private void BatTatButton(bool val)
        {
            btnLuu.Enabled = !val;
            btnSapLich.Enabled = val;
            btnSuaLich.Enabled = val;
            btnXoaLich.Enabled = val;
            cobTo.Enabled = !val;
            dtkethuc.Enabled = !val;
            dtbatdau.Enabled = !val;
        }
        private void UcPhanCongLichTruc_Load(object sender, EventArgs e)
        {
            loaddata();   
        }
        private bool kiemtrangay(int ngay1, int thang1, int nam1, int ngay2,int thang2,int nam2)
        {
            if (nam1 * 12 * 31 + thang1 * 31 + ngay1 > nam2 * 12 * 31 + thang2 * 31 + ngay2)
            {
                return false;
            }
            return true;
        }
        private bool kiemtrangayCSDL(int ngay,int thang,int nam)
        {
            SqlCommand cmd = new SqlCommand("tblLichTruc_KiemTraNgay",cn.ketnoi());
            cmd.CommandType = CommandType.StoredProcedure;
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            da.Fill(dt);
            if (int.Parse(dt.Rows[0]["nam"].ToString()) * 12 * 31 + int.Parse(dt.Rows[0]["thang"].ToString()) * 31 + int.Parse(dt.Rows[0]["ngay"].ToString()) >= nam * 12 * 31 + thang * 31 + ngay)
            {
                return false;
            }
            return true;
        }

        private void btnSapLich_Click(object sender, EventArgs e)
        {

            them = true;
            BatTatButton(false);
        }

        private void btnSuaLich_Click(object sender, EventArgs e)
        {
            them = false;
            BatTatButton(false);
        }

        private void btnLuu_Click(object sender, EventArgs e)
        {
            if(them==true)
            {
            if (kiemtrangay(DateTime.Now.Day, DateTime.Now.Month, DateTime.Now.Year, dtbatdau.Value.Day, dtbatdau.Value.Month, dtbatdau.Value.Year) == false)
            {
                MessageBox.Show("Ngày bắt đầu phải lớn hơn hoặc bằng ngày hiện tại", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                dtbatdau.Focus();
            }
            else if (kiemtrangay(dtbatdau.Value.Day, dtbatdau.Value.Month, dtbatdau.Value.Year, dtkethuc.Value.Day, dtkethuc.Value.Month, dtkethuc.Value.Year) == false)
            {
                MessageBox.Show("Ngày kết thúc phải lớn hơn hoặc bằng ngày bắt đầu", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                dtkethuc.Focus();
            }
            else if (kiemtrangayCSDL(dtbatdau.Value.Day, dtbatdau.Value.Month, dtbatdau.Value.Year) == false)
            {
                MessageBox.Show("Ngày này đã có lịch của tổ khác", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                dtbatdau.Focus();
            }
            else
            {               
                    SqlCommand cmd = new SqlCommand("tblLichTruc_Them", cn.ketnoi());
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.Add(new SqlParameter("mato", SqlDbType.Int)).Value = cobTo.SelectedValue;
                    cmd.Parameters.Add(new SqlParameter("ngaybd", SqlDbType.DateTime)).Value = dtbatdau.Value;
                    cmd.Parameters.Add(new SqlParameter("ngaykt", SqlDbType.DateTime)).Value = dtkethuc.Value;
                    if (cmd.ExecuteNonQuery() == 1)
                    {
                        loaddata();
                    }
                    else
                    {
                        MessageBox.Show("Lỗi", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }
            else
            {
                if (kiemtrangay(DateTime.Now.Day, DateTime.Now.Month, DateTime.Now.Year, dtbatdau.Value.Day, dtbatdau.Value.Month, dtbatdau.Value.Year) == false)
                {
                    MessageBox.Show("Ngày bắt đầu phải lớn hơn hoặc bằng ngày hiện tại", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    dtbatdau.Focus();
                }
                else if (kiemtrangay(dtbatdau.Value.Day, dtbatdau.Value.Month, dtbatdau.Value.Year, dtkethuc.Value.Day, dtkethuc.Value.Month, dtkethuc.Value.Year) == false)
                {
                    MessageBox.Show("Ngày kết thúc phải lớn hơn hoặc bằng ngày bắt đầu", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    dtkethuc.Focus();
                }
                else
                {
                    SqlCommand cmd_sua = new SqlCommand("tblLichTruc_Sua", cn.ketnoi());
                    cmd_sua.CommandType = CommandType.StoredProcedure;
                    cmd_sua.Parameters.Add(new SqlParameter("mato", SqlDbType.Int)).Value = cobTo.SelectedValue;
                    cmd_sua.Parameters.Add(new SqlParameter("ngaybd", SqlDbType.DateTime)).Value = dtbatdau.Value;
                    cmd_sua.Parameters.Add(new SqlParameter("ngaykt", SqlDbType.DateTime)).Value = dtkethuc.Value;
                    cmd_sua.Parameters.Add(new SqlParameter("malich", SqlDbType.Int)).Value = gridView.GetRowCellValue(gridView.FocusedRowHandle, "MaLichTruc");
                    if (cmd_sua.ExecuteNonQuery() == 1)
                    {
                        loaddata();
                    }
                    else
                    {
                        MessageBox.Show("Lỗi", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }

                 }
            }
        }

        private void btnXoaLich_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Bạn có chắc chắn muốn xóa không?", "Thông Báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                SqlCommand cmd = new SqlCommand("tblLichTruc_Xoa",cn.ketnoi());
                cmd.Parameters.Add(new SqlParameter("malich",SqlDbType.Int)).Value = gridView.GetRowCellValue(gridView.FocusedRowHandle,"MaLichTruc");
                if (cmd.ExecuteNonQuery() == 1)
                {
                    loaddata();
                }
                else
                {
                    MessageBox.Show("Lỗi", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }

        private void gridView_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
        {
            try
            {
                cobTo.SelectedValue = gridView.GetRowCellValue(gridView.FocusedRowHandle, "MaTo");
                dtbatdau.Value = Convert.ToDateTime(gridView.GetFocusedRowCellDisplayText("NgayBatDau"));
                dtkethuc.Value = Convert.ToDateTime(gridView.GetFocusedRowCellDisplayText("NgayKetThuc"));
            }
            catch
            {
            }
        }

        private void gridView_RowCellStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs e)
        {
            if (e.RowHandle == gridView.FocusedRowHandle)
            {
                e.Appearance.BackColor = Color.DeepSkyBlue;
            }
        }

        private void btnTim_Click(object sender, EventArgs e)
        {
            SqlCommand cmd = new SqlCommand("tblLichTruc_TimLich",cn.ketnoi());
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add(new SqlParameter("ngaybd",SqlDbType.DateTime)).Value = dtTimbd.Value;
            cmd.Parameters.Add(new SqlParameter("ngaykt",SqlDbType.DateTime)).Value = dtTimKetThuc.Value;
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            da.Fill(dt);
            gridControl.DataSource = dt;
        }

        private void btnReload_Click(object sender, EventArgs e)
        {
            loaddata();
        }

        private void btnInLich_Click(object sender, EventArgs e)
        {
            frmInLichTruc frm = new frmInLichTruc();
            frm.ShowDialog();
        }

    }
}
